from mcp.server.fastmcp import FastMCP

# 初始化 FastMCP 服务
mcp = FastMCP("weather", log_level="ERROR")

# 定义工具1-根据城市给出城市的经纬度
@mcp.tool()
def get_location(city: str) -> dict:
    """
    返回给定城市的经度和纬度。
    参数：
        city (str)：要检索坐标的城市名称。
    返回值：
        dict：一个包含该城市经度（'lng'）和纬度（'lat'）的字典。
                如果未找到该城市，则返回一个空字典。
    """
    # 制作假数据
    city_coordinates = {
        "沈阳": {"lng": 123.43, "lat": 41.80},
        "大连": {"lng": 121.62, "lat": 38.92},
        "抚顺": {"lng": 123.95, "lat": 41.87},
        # Add more cities as needed
    }

    # Check if the city exists in our mapping
    if city in city_coordinates:
        return city_coordinates[city]
    else:
        return {}

# 定义工具2-根据经纬度给出天气
@mcp.tool()
def get_weather(
        lng: float,  # The longitude of the location (e.g., 123.43 for 沈阳).
        lat: float  # The latitude of the location (e.g., 341.80 for 沈阳).
) -> dict:
    """
    根据给定的经度和纬度获取天气信息。
    这是一个占位符。在此处你需要集成一个真实的天气 API。
    参数：
        lng (float)：地点的经度。
        lat (float)：地点的纬度。
    返回值：
        dict：一个包含模拟天气信息的字典，包括 “temperature”（温度）、“conditions”（天气状况）、“humidity”（湿度）、“wind_speed”（风速）和 “unit”（单位）。
    """

    print(f"Simulating weather fetch for Lng: {lng}, Lat: {lat}")
    return {
        "temperature": 25.5,
        "conditions": "Sunny",
        "humidity": 60,
        "wind_speed": 10.2,
        "unit": "celsius"
    }


if __name__ == "__main__":
    # 实例化并运行 MCPMCP server
    print("Starting FastMCP server with 'weather' service...")
    mcp.run(transport='stdio')
    print("FastMCP server stopped.")
    
    